package com.hqj.demo01;

/**
 * 接口练习
 * @author HQJ
 * 图像接口Shape
 *  *
 *  * 有计算面积抽象方法calcArea() 有返回值且可以保留小数1位
 *  * 计算周长的方法calcRound() 有返回值
 *  *
 *  * 矩形类Rectangle,实现Shape
 *  * 属性 int h，int w
 *  * h为高，w为宽
 *  * 提供构造方法及get/set方法
 *  * 重写计算面积方法和与周长的方法
 *  *
 *
 *  * 圆形类Circle,实现Shape
 *  * 属性 double r
 *  * r为半径
 *  * 提供构造方法及get/set方法
 *  * 重写计算面积方法和与周长的方法
 *
 *  * 测试类
 *  * 输出面积及周长
 */
public class Exercise04 {
    public static void main(String[] args) {
        Rectangle1 r = new Rectangle1();
        r.setH(10);r.setW(3);
        System.out.println("矩形的面积:"+r.calcArea());
        System.out.println("矩形的周长:"+r.calcRound());

        Circle c = new Circle();
        c.setR(1.2D);
        System.out.println("圆的面积:"+c.calcArea());
        System.out.println("圆的周长:"+c.calcRound());
    }



}

interface Shape{

    public double calcArea();

    public int calcRound();
}
class Rectangle1 implements Shape{

    private int w;
    private int h;

    @Override
    public double calcArea() {
        long area = w * h;
        return area;
    }

    @Override
    public int calcRound() {

        return (w+h)*2;
    }

    public int getW() {
        return w;
    }

    public void setW(int w) {
        this.w = w;
    }

    public int getH() {
        return h;
    }

    public void setH(int h) {
        this.h = h;
    }
}

class Circle implements Shape{

    private double r;

    @Override
    public double calcArea() {
        double area = Math.PI*Math.pow(r,2);//314.15926
        area =  Math.round(area*100)/100;
        return area;
    }

    @Override
    public int calcRound() {
        double round = 2*Math.PI*r;
        return (int)Math.round(round);
    }

    public double getR() {
        return r;
    }

    public void setR(double r) {
        this.r = r;
    }
}